﻿using LightingImportTool.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace LightingImportTool
{
    public abstract class LightingCommand
    {
        public void Excute()
        {
            try
            {
                InnerExcute();
            }
            catch(Exception ex)
            {
                
            }
        }

        protected abstract void InnerExcute();
        public virtual bool IsEnabled
        {
            get
            {
                return true;
            }
        }
    }

    public class LoginCommand : LightingCommand
    {
        private LoginCommand()
        {
        }

        private static readonly LightingCommand _singleton = new LoginCommand();

        public static LightingCommand Singleton
        {
            get
            {
                return _singleton;
            }
        }

        protected override void InnerExcute()
        {
            throw new NotImplementedException();
        }
    }

    public class CheckCommand : LightingCommand
    {
        private CheckCommand()
        {
        }

        private static readonly LightingCommand _singleton = new CheckCommand();

        public static LightingCommand Singleton
        {
            get
            {
                return _singleton;
            }
        }


        protected override void InnerExcute()
        {
            throw new NotImplementedException();
        }
    }

    public class CommitCommand : LightingCommand
    {
        private CommitCommand()
        {
        }

        private static readonly LightingCommand _singleton = new CommitCommand();

        public static LightingCommand Singleton
        {
            get
            {
                return _singleton;
            }
        }

        protected override void InnerExcute()
        {
            throw new NotImplementedException();
        }
    }

    public class PictureEditCommand : LightingCommand
    {
        private PictureEditCommand()
        {
        }

        private static readonly LightingCommand _singleton = new PictureEditCommand();

        public static LightingCommand Singleton
        {
            get
            {
                return _singleton;
            }
        }

        protected override void InnerExcute()
        {
            throw new NotImplementedException();
        }
    }

    public class OpenPackageCommand : LightingCommand
    {
        private OpenPackageCommand()
        {
        }

        private static readonly LightingCommand _singleton = new OpenPackageCommand();

        public static LightingCommand Singleton
        {
            get
            {
                return _singleton;
            }
        }

        protected override void InnerExcute()
        {
            throw new NotImplementedException();
        }
    }

    public class ExportPackageCommand : LightingCommand
    {
        private ExportPackageCommand()
        {
        }

        private static readonly LightingCommand _singleton = new ExportPackageCommand();

        public static LightingCommand Singleton
        {
            get
            {
                return _singleton;
            }
        }

        protected override void InnerExcute()
        {
            throw new NotImplementedException();
        }
    }

    public class HelpCommand : LightingCommand
    {
        private HelpCommand()
        {
        }

        private static readonly LightingCommand _singleton = new HelpCommand();

        public static LightingCommand Singleton
        {
            get
            {
                return _singleton;
            }
        }


        protected override void InnerExcute()
        {
            throw new NotImplementedException();
        }
    }

    public class FeedbackCommand : LightingCommand
    {
        private FeedbackCommand()
        {
        }

        private static readonly LightingCommand _singleton = new FeedbackCommand();

        public static LightingCommand Singleton
        {
            get
            {
                return _singleton;
            }
        }

        protected override void InnerExcute()
        {
            throw new NotImplementedException();
        }
    }

    public class AboutCommand : LightingCommand
    {
        private AboutCommand()
        {
        }

        private static readonly LightingCommand _singleton = new AboutCommand();

        public static LightingCommand Singleton
        {
            get
            {
                return _singleton;
            }
        }

        protected override void InnerExcute()
        {
            throw new NotImplementedException();
        }
    }
}
